<?php /**
 *  【梦想cms】 http://www.lmxcms.com *
 *   荷官操作控制器
 *   不需要验证连接token的  直接继承Action   不在继承HomeAction
 */
defined('LMXCMS') or exit();
use GatewayWorker\Lib\Gateway;
use Workerman\Lib\Timer;
class IndexAction extends HomeAction{
    private $num=0;
    public function __construct() {
        parent::__construct();
    }

    //房间初始化方法 接收荷官的ID  添加游戏开始计时器
    public function index(){
        echo "首页控制器";

        
        //  定时器测试
        /*$timer=10;
        $this->num=Data::StartData(1);
        $num=Data::StartData(1);
        Timer::add($timer,function($num){
            echo "Timer run \n".$num.$num.$num.$num;
            $this->sendnum();
        });*/
    }

    //荷官发送打点数
    /*todo
     * 1. 发送游戏点数
     * 2. 判断游戏进入到哪步
     * 3.
     *    判断游戏是否结束
     *        是：所有人的礼物清空   通知荷官和所有房间内所有人进入大局准备状态  可以投币 （定时器执行）
     *
     *        否：继续
     *
     *
     *    判断是否为对战
     *     否： 进入4
     *     是：  20s后 执行 warsendnum（）
     * 4. 判断奖励类型
     *     礼物： 记录礼物ID
     *     钥匙： 对应钥匙加一
     *     宝箱： 对应宝箱加一
     *     积分： 直接增加积分
     *
     *     发送对应数据：前段展示动画
     * 5. 通知荷官和有权限的玩家进入二次投币状态倒计时
    */
    public function sendnum(){
        echo "Timer run in methd sendnum \n";
        $uid=$this->Socketdata['uid'];
        $nums=(int)$this->Socketdata['nums'];
        $roomid=(int)$this->Socketdata['roomid'];
        if($nums<1 ||$nums>6){
            return;
        }
        $roomData=$this->dataModel->getRoomData($roomid);
        $index=$this->dataModel->getIndex($roomid);
        $index=$index+$nums;
        $maxindex=count($roomData['ChessGame']);
        if($index>$maxindex){
            $index=$maxindex;
        }
        $chessData=$roomData['ChessGame'][$index-1];
        switch ($chessData['type']){
            case '0':
                $this->pass();
                break;
            case '1':
                $this->getkey();
                break;
            case '2':
                $this->war();

        }


    }
    //通知荷官打点
    public function warsendnum($roomid){
        //判断玩家的胜负状态  胜利的  领取相应奖励  失败的 踢出游戏
        $master=$this->Socketdata['master'];
        $roomid=(int)$this->Socketdata['roomid'];
        $sendnums=(int)$this->Socketdata['sendnums'];
        $roomData=$this->dataModel->getRoomData($roomid);
        $ds=$sendnums%2;//鹖冠大点到单双
        foreach ($roomData['OnUser'] as $k=>$v){
            if($roomData['allUser'][$k]['warData']%2!=$ds){
                $outlist[]=$roomData['OnUser'][$k];
                unset($roomData['OnUser'][$k]);
            }
        }
        $index=$this->dataModel->getIndex($roomid);
        $indexData=$this->dataModel->getIndexData($roomid,$index);
        Gateway::sendToUid();
    }
    //荷官的对战数据
    public function war(){}

    //手动结束游戏
    public function gameend(){

    }
}
?>